package butines.core.game;

import java.awt.event.KeyEvent;

public interface Input {

	boolean isKeyPressed(int keyCode);
	
	boolean isKeyDown(int keyCode);
	
	boolean isButtonPressed(int button);
	
	boolean isButtonDown(int button);
    
	boolean isMouseOut();
	
	void addListener(InputListener listener);
	
	void removeListener(InputListener listener);
	
	int getMouseX();
	
	int getMouseY();
	
	
	int NUM_KEY = 600;
	int NUM_MOUSE = 3;
	
	int KEY_A = KeyEvent.VK_A;
	int KEY_B = KeyEvent.VK_B;
	int KEY_C = KeyEvent.VK_C;
	int KEY_D = KeyEvent.VK_D;
	int KEY_E = KeyEvent.VK_E;
	int KEY_F = KeyEvent.VK_F;
	int KEY_G = KeyEvent.VK_G;
	int KEY_H = KeyEvent.VK_H;
	int KEY_I = KeyEvent.VK_I;
	int KEY_J = KeyEvent.VK_J;
	int KEY_K = KeyEvent.VK_K;
	int KEY_L = KeyEvent.VK_L;
	int KEY_M = KeyEvent.VK_M;
	int KEY_N = KeyEvent.VK_N;
	int KEY_O = KeyEvent.VK_O;
	int KEY_P = KeyEvent.VK_P;
	int KEY_Q = KeyEvent.VK_Q;
	int KEY_R = KeyEvent.VK_R;
	int KEY_S = KeyEvent.VK_S;
	int KEY_T = KeyEvent.VK_T;
	int KEY_U = KeyEvent.VK_U;
	int KEY_V = KeyEvent.VK_V;
	int KEY_W = KeyEvent.VK_W;
	int KEY_X = KeyEvent.VK_X;
	int KEY_Y = KeyEvent.VK_Y;
	int KEY_Z = KeyEvent.VK_Z;

	int KEY_0 = KeyEvent.VK_0;
	int KEY_1 = KeyEvent.VK_1;
	int KEY_2 = KeyEvent.VK_2;
	int KEY_3 = KeyEvent.VK_3;
	int KEY_4 = KeyEvent.VK_4;
	int KEY_5 = KeyEvent.VK_5;
	int KEY_6 = KeyEvent.VK_6;
	int KEY_7 = KeyEvent.VK_7;
	int KEY_8 = KeyEvent.VK_8;
	int KEY_9 = KeyEvent.VK_9;

	int KEY_NUMLOCK = KeyEvent.VK_NUM_LOCK;
	int KEY_PAD_DIV = KeyEvent.VK_DIVIDE;
	int KEY_PAD_MULT = KeyEvent.VK_MULTIPLY;
	int KEY_PAD_SUB = KeyEvent.VK_SUBTRACT;
	int KEY_PAD_ADD = KeyEvent.VK_ADD;
	int KEY_PAD_DEL = KeyEvent.VK_DECIMAL;
	int KEY_PAD_ENTER = KeyEvent.VK_ENTER;
	int KEY_PAD_0 = KeyEvent.VK_NUMPAD0;
	int KEY_PAD_1 = KeyEvent.VK_NUMPAD1;
	int KEY_PAD_2 = KeyEvent.VK_NUMPAD2;
	int KEY_PAD_3 = KeyEvent.VK_NUMPAD3;
	int KEY_PAD_4 = KeyEvent.VK_NUMPAD4;
	int KEY_PAD_5 = KeyEvent.VK_NUMPAD5;
	int KEY_PAD_6 = KeyEvent.VK_NUMPAD6;
	int KEY_PAD_7 = KeyEvent.VK_NUMPAD7;
	int KEY_PAD_8 = KeyEvent.VK_NUMPAD8;
	int KEY_PAD_9 = KeyEvent.VK_NUMPAD9;
	int KEY_CLEAN = KeyEvent.VK_CLEAR; // PAD_5 WITH NUMLCOK OFF

	int KEY_ESC =  KeyEvent.VK_ESCAPE;
	int KEY_F1 = KeyEvent.VK_F1;
	int KEY_F2 = KeyEvent.VK_F2;
	int KEY_F3 = KeyEvent.VK_F3;
	int KEY_F4 = KeyEvent.VK_F4;
	int KEY_F5 = KeyEvent.VK_F5;
	int KEY_F6 = KeyEvent.VK_F6;
	int KEY_F7 = KeyEvent.VK_F7;
	int KEY_F8 = KeyEvent.VK_F8;
	int KEY_F9 = KeyEvent.VK_F9;
	int KEY_F10 = KeyEvent.VK_F10;
	int KEY_F11 = KeyEvent.VK_F11;
	int KEY_F12 = KeyEvent.VK_F12;

	int KEY_INSERT = KeyEvent.VK_INSERT;
	int KEY_DEL = KeyEvent.VK_DELETE;
	int KEY_HOME = KeyEvent.VK_HOME;
	int KEY_END = KeyEvent.VK_END;
	int KEY_PGUP = KeyEvent.VK_PAGE_UP;
	int KEY_PGDN = KeyEvent.VK_PAGE_DOWN;

	int KEY_LEFT = KeyEvent.VK_LEFT;
	int KEY_RIGHT = KeyEvent.VK_RIGHT;
	int KEY_UP = KeyEvent.VK_UP;
	int KEY_DOWN = KeyEvent.VK_DOWN;

	int KEY_PRTSCR = KeyEvent.VK_PRINTSCREEN;
	int KEY_SCRLOCK = KeyEvent.VK_SCROLL_LOCK;
	int KEY_PAUSE = KeyEvent.VK_PAUSE;

	int KEY_TAB =  KeyEvent.VK_TAB;
	int KEY_CAPSLOCK = KeyEvent.VK_CAPS_LOCK;
	int KEY_SHIFT = KeyEvent.VK_SHIFT;
	int KEY_CONTROL = KeyEvent.VK_CONTROL;
	int KEY_WIN = KeyEvent.VK_WINDOWS;
	int KEY_ALT = KeyEvent.VK_ALT;
	int KEY_SPACE =  KeyEvent.VK_SPACE;
	int KEY_MENU = KeyEvent.VK_CONTEXT_MENU;
	int KEY_ENTER =  KeyEvent.VK_ENTER;
	int KEY_BACKSPACE =  KeyEvent.VK_BACK_SPACE;

	int KEY_QUOTE =  KeyEvent.VK_QUOTE;
	int KEY_MINUS =  KeyEvent.VK_MINUS;
	int KEY_EQUALS =  KeyEvent.VK_EQUALS;
	int KEY_ACUTE =  KeyEvent.VK_DEAD_ACUTE;
	int KEY_TILDE =  KeyEvent.VK_DEAD_TILDE;
	int KEY_OPENBRACKET =  KeyEvent.VK_OPEN_BRACKET;
	int KEY_CLOSEBRACKET =  KeyEvent.VK_CLOSE_BRACKET;
	int KEY_COMMA =  KeyEvent.VK_COMMA;
	int KEY_PERIOD =  KeyEvent.VK_PERIOD;
	int KEY_SEMICOLON = KeyEvent.VK_SEMICOLON;
	
    int BUTTON_1   = 0;
    int BUTTON_2   = 1;
    int BUTTON_3   = 2;
	
}
